Initialization of basin average
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=*), | intent(in) | :: | fileini | |||
character(len=*), | intent(in) | :: | pathout | |||
type(grid_real), | intent(in) | :: | temp |
air temperarure (°C) |
||
type(grid_real), | intent(in) | :: | tmean |
air temperarure daily mean(°C) |
||
type(grid_real), | intent(in) | :: | tmax |
air temperarure daily max (°C) |
||
type(grid_real), | intent(in) | :: | tmin |
air temperarure daily min (°C) |
||
type(grid_real), | intent(in) | :: | precipitation |
precipitation rate (m/s) |
||
type(grid_real), | intent(in) | :: | rh |
air relative humidity (0-100) |
||
type(grid_real), | intent(in) | :: | radiation |
solar radiation (w/m2) |
||
type(grid_real), | intent(in) | :: | netradiation |
net radiation (w/m2) |
||
type(grid_real), | intent(in) | :: | windspeed |
wind speed (m/s) |
||
type(grid_real), | intent(in) | :: | daily_precipitation |
daily precipitation rate (m/s) |
||
type(grid_real), | intent(in) | :: | irrigation |
irrigation rate (m/s) |
||
type(grid_real), | intent(in) | :: | swe |
snow water equivalent (m) |
||
type(grid_real), | intent(in) | :: | sm |
soil mositure (-) |
||
type(grid_real), | intent(in) | :: | runoff |
runoff (m/s) |
||
type(grid_real), | intent(in) | :: | infiltration |
infiltration (m/s) |
||
type(grid_real), | intent(in) | :: | percolation |
deep percolation (m/s) |
||
type(grid_real), | intent(in) | :: | et |
actual evapotranspiration (m/s) |
||
type(grid_real), | intent(in) | :: | pet |
potential evapotranspiration (m/s) |
||
type(grid_real), | intent(in) | :: | dsm |
soil moisture variation (m) |
||
type(grid_real), | intent(in) | :: | snowmelt |
snow melt (m) |
||
type(grid_real), | intent(in) | :: | iwe |
ice water equivalent (m) |
||
type(grid_real), | intent(in) | :: | icemelt |
ice melt (m) |
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
type(IniList), | public | :: | iniDB | ||||
character(len=300), | public | :: | string |
SUBROUTINE InitBasinAverage & ! (fileini, pathout, temp, tmean, tmax, tmin, precipitation, & rh, radiation, netradiation, windspeed, daily_precipitation, & irrigation, swe, sm, runoff, infiltration, percolation, et, & pet, dsm, snowmelt, iwe, icemelt ) IMPLICIT NONE !arguments with intent in: CHARACTER(LEN = *), INTENT(IN) :: fileini CHARACTER(LEN = *), INTENT(IN) :: pathout TYPE (grid_real), INTENT(IN) :: temp !!air temperarure (°C) TYPE (grid_real), INTENT(IN) :: tmean !!air temperarure daily mean(°C) TYPE (grid_real), INTENT(IN) :: tmax !!air temperarure daily max (°C) TYPE (grid_real), INTENT(IN) :: tmin !!air temperarure daily min (°C) TYPE (grid_real), INTENT(IN) :: precipitation !!precipitation rate (m/s) TYPE (grid_real), INTENT(IN) :: rh !!air relative humidity (0-100) TYPE (grid_real), INTENT(IN) :: radiation !!solar radiation (w/m2) TYPE (grid_real), INTENT(IN) :: netradiation !!net radiation (w/m2) TYPE (grid_real), INTENT(IN) :: windspeed !!wind speed (m/s) TYPE (grid_real), INTENT(IN) :: daily_precipitation !!daily precipitation rate (m/s) TYPE (grid_real), INTENT(IN) :: irrigation !!irrigation rate (m/s) TYPE (grid_real), INTENT(IN) :: swe !!snow water equivalent (m) TYPE (grid_real), INTENT(IN) :: sm !!soil mositure (-) TYPE (grid_real), INTENT(IN) :: runoff !!runoff (m/s) TYPE (grid_real), INTENT(IN) :: infiltration !!infiltration (m/s) TYPE (grid_real), INTENT(IN) :: percolation !!deep percolation (m/s) TYPE (grid_real), INTENT(IN) :: et !!actual evapotranspiration (m/s) TYPE (grid_real), INTENT(IN) :: pet !!potential evapotranspiration (m/s) TYPE (grid_real), INTENT(IN) :: dsm !!soil moisture variation (m) TYPE (grid_real), INTENT(IN) :: snowmelt !! snow melt (m) TYPE (grid_real), INTENT(IN) :: iwe !! ice water equivalent (m) TYPE (grid_real), INTENT(IN) :: icemelt !! ice melt (m) !local declarations TYPE(IniList) :: iniDB CHARACTER (LEN = 300) :: string !-------------------------------end of declaration----------------------------- !Check morphological properties are available IF ( .NOT. flowDirection_loaded ) THEN CALL Catch ('error', 'BasinAverage', 'flow direction missing, & check morphological properties') END IF IF ( .NOT. flowAccumulation_loaded ) THEN CALL Catch ('error', 'BasinAverage', 'flow accumulation missing, & check morphological properties') END IF IF ( .NOT. streamNetworkCreated ) THEN CALL Catch ('error', 'BasinAverage', 'stream network missing, & check morphological properties') END IF ! open and read configuration file CALL IniOpen (fileini, iniDB) !create and export basin raster maps IF (KeyIsPresent ('raster-export', iniDB) ) THEN IF ( IniReadInt ('raster-export', iniDB) == 1 ) THEN CALL BasinRasterExport ( pathout ) END IF END IF ! search for active variable for output CALL Catch ('info', 'BasinAverage', 'checking for active variables ') countVar = 0 !precipitation IF ( IniReadInt ('precipitation', iniDB ) == 1) THEN IF ( .NOT. ALLOCATED (precipitation % mat) ) THEN CALL Catch ('warning', 'BasinAverage', 'precipitation not allocated, & forced to not export basin average ') varOut (1) = .FALSE. ELSE varOut (1) = .TRUE. countVar = countVar + 1 CALL CopyNetwork ( sites, sitesPrecipitation ) fileUnitPrecipitation = GetUnit () string = TRIM(pathout) // 'mean_precipitation.fts' OPEN ( unit = fileUnitPrecipitation, file = string ) sitesPrecipitation % description = 'average precipitation' sitesPrecipitation % unit = 'mm' sitesPrecipitation % offsetZ = 0. CALL WriteMetadata ( network = sitesPrecipitation, & fileunit = fileUnitPrecipitation ) CALL WriteData (sitesPrecipitation, fileUnitPrecipitation, .TRUE.) END IF ELSE varOut (1) = .FALSE. END IF !daily-precipitation IF ( IniReadInt ('daily-precipitation', iniDB ) == 1) THEN IF ( .NOT. ALLOCATED (daily_precipitation % mat) ) THEN CALL Catch ('warning', 'BasinAverage', & 'daily_precipitation not allocated, & forced to not export basin average ') varOut (2) = .FALSE. ELSE varOut (2) = .TRUE. countVar = countVar + 1 CALL CopyNetwork ( sites, sitesPrecipitationDaily ) fileUnitPrecipitationDaily = GetUnit () string = TRIM(pathout) // 'mean_pdaily.fts' OPEN ( unit = fileUnitPrecipitationDaily, file = string ) sitesPrecipitationDaily % description = 'daily precipitation' sitesPrecipitationDaily % unit = 'mm' sitesPrecipitationDaily % offsetZ = 0. CALL WriteMetadata ( network = sitesPrecipitationDaily, & fileunit = fileUnitPrecipitationDaily ) CALL WriteData (sitesPrecipitationDaily, & fileUnitPrecipitationDaily, .TRUE.) END IF ELSE varOut (2) = .FALSE. END IF !air-temperature IF ( IniReadInt ('temperature', iniDB ) == 1) THEN IF ( .NOT. ALLOCATED (temp % mat) ) THEN CALL Catch ('warning', 'BasinAverage', & 'air temperature not allocated, & forced to not export basin average ') varOut (3) = .FALSE. ELSE varOut (3) = .TRUE. countVar = countVar + 1 CALL CopyNetwork ( sites, sitesTemp ) fileUnitTemp = GetUnit () string = TRIM(pathout) // 'mean_temperature.fts' OPEN ( unit = fileUnitTemp, file = string ) sitesTemp % description = 'air temperature' sitesTemp % unit = 'Degree Celsius' sitesTemp % offsetZ = 0. CALL WriteMetadata ( network = sitesTemp, & fileunit = fileUnitTemp ) CALL WriteData (sitesTemp, fileUnitTemp, .TRUE.) END IF ELSE varOut (3) = .FALSE. END IF !temperature-daily-mean IF ( IniReadInt ('temperature-daily-mean', iniDB ) == 1) THEN IF ( .NOT. ALLOCATED (tmean % mat) ) THEN CALL Catch ('warning', 'BasinAverage', & 'mean daily air temperature not allocated, & forced to not export basin average ') varOut (4) = .FALSE. ELSE varOut (4) = .TRUE. countVar = countVar + 1 CALL CopyNetwork ( sites, sitesTmean ) fileUnitTmean = GetUnit () string = TRIM(pathout) // 'mean_tmean.fts' OPEN ( unit = fileUnitTmean, file = string ) sitesTmean % description = 'mean daily air temperature' sitesTmean % unit = 'Degree Celsius' sitesTmean % offsetZ = 0. CALL WriteMetadata ( network = sitesTmean, & fileunit = fileUnitTmean ) CALL WriteData (sitesTmean, fileUnitTmean, .TRUE.) END IF ELSE varOut (4) = .FALSE. END IF !air-temperature-daily-max IF ( IniReadInt ('temperature-daily-max', iniDB ) == 1) THEN IF ( .NOT. ALLOCATED (tmax % mat) ) THEN CALL Catch ('warning', 'BasinAverage', & 'max daily air temperature not allocated, & forced to not export basin average ') varOut (5) = .FALSE. ELSE varOut (5) = .TRUE. countVar = countVar + 1 CALL CopyNetwork ( sites, sitesTmax ) fileUnitTmax = GetUnit () string = TRIM(pathout) // 'mean_tmax.fts' OPEN ( unit = fileUnitTmax, file = string ) sitesTmean % description = 'maximum daily air temperature' sitesTmean % unit = 'Degree Celsius' sitesTmean % offsetZ = 0. CALL WriteMetadata ( network = sitesTmax, & fileunit = fileUnitTmax ) CALL WriteData (sitesTmax, fileUnitTmax, .TRUE.) END IF ELSE varOut (5) = .FALSE. END IF !air-temperature-daily-min IF ( IniReadInt ('temperature-daily-min', iniDB ) == 1) THEN IF ( .NOT. ALLOCATED (tmin % mat) ) THEN CALL Catch ('warning', 'BasinAverage', & 'min daily air temperature not allocated, & forced to not export basin average ') varOut (6) = .FALSE. ELSE varOut (6) = .TRUE. countVar = countVar + 1 CALL CopyNetwork ( sites, sitesTmin ) fileUnitTmin = GetUnit () string = TRIM(pathout) // 'mean_tmin.fts' OPEN ( unit = fileUnitTmin, file = string ) sitesTmin % description = 'minimum daily air temperature' sitesTmean % unit = 'Degree Celsius' sitesTmean % offsetZ = 0. CALL WriteMetadata ( network = sitesTmin, & fileunit = fileUnitTmin ) CALL WriteData (sitesTmin, fileUnitTmin, .TRUE.) END IF ELSE varOut (6) = .FALSE. END IF !relative-humidity IF ( IniReadInt ('relative-humidity', iniDB ) == 1) THEN IF ( .NOT. ALLOCATED (rh % mat) ) THEN CALL Catch ('warning', 'BasinAverage', & 'relative humidity not allocated, & forced to not export basin average ') varOut (7) = .FALSE. ELSE varOut (7) = .TRUE. countVar = countVar + 1 CALL CopyNetwork ( sites, sitesRH ) fileUnitRH = GetUnit () string = TRIM(pathout) // 'mean_rh.fts' OPEN ( unit = fileUnitRH, file = string ) sitesRH % description = 'mean air relative humidity' sitesRH % unit = '% 0-100' sitesRH % offsetZ = 0. CALL WriteMetadata ( network = sitesRH, & fileunit = fileUnitRH ) CALL WriteData (sitesRH, fileUnitRH, .TRUE.) END IF ELSE varOut (7) = .FALSE. END IF !solar-radiation IF ( IniReadInt ('solar-radiation', iniDB ) == 1) THEN IF ( .NOT. ALLOCATED (radiation % mat) ) THEN CALL Catch ('warning', 'BasinAverage', & 'solar radiation not allocated, & forced to not export basin average ') varOut (8) = .FALSE. ELSE varOut (8) = .TRUE. countVar = countVar + 1 CALL CopyNetwork ( sites, sitesRadiation ) fileUnitRadiation = GetUnit () string = TRIM(pathout) // 'mean_rad.fts' OPEN ( unit = fileUnitRadiation, file = string ) sitesRadiation % description = 'mean solar radiation' sitesRadiation % unit = 'w/m2' sitesRadiation % offsetZ = 0. CALL WriteMetadata ( network = sitesRadiation, & fileunit = fileUnitRadiation ) CALL WriteData (sitesRadiation, fileUnitRadiation, .TRUE.) END IF ELSE varOut (8) = .FALSE. END IF !net-radiation IF ( IniReadInt ('net-radiation', iniDB ) == 1) THEN IF ( .NOT. ALLOCATED (netradiation % mat) ) THEN CALL Catch ('warning', 'BasinAverage', 'net radiation not allocated, & forced to not export basin average ') varOut (9) = .FALSE. ELSE varOut (9) = .TRUE. countVar = countVar + 1 CALL CopyNetwork ( sites, sitesNetRadiation ) fileUnitNetRadiation = GetUnit () string = TRIM(pathout) // 'mean_netrad.fts' OPEN ( unit = fileUnitNetRadiation, file = string ) sitesNetRadiation % description = 'mean net radiation' sitesNetRadiation % unit = 'w/m2' sitesNetRadiation % offsetZ = 0. CALL WriteMetadata ( network = sitesNetRadiation, & fileunit = fileUnitNetRadiation ) CALL WriteData (sitesNetRadiation, fileUnitNetRadiation, .TRUE.) END IF ELSE varOut (9) = .FALSE. END IF !wind-speed IF ( IniReadInt ('wind-speed', iniDB ) == 1) THEN IF ( .NOT. ALLOCATED (windspeed % mat) ) THEN CALL Catch ('warning', 'BasinAverage', 'wind speed not allocated, & forced to not export basin average ') varOut (10) = .FALSE. ELSE varOut (10) = .TRUE. countVar = countVar + 1 CALL CopyNetwork ( sites, sitesWindSpeed ) fileUnitWindSpeed = GetUnit () string = TRIM(pathout) // 'mean_windspeed.fts' OPEN ( unit = fileUnitWindSpeed, file = string ) sitesWindSpeed % description = 'mean wind speed' sitesWindSpeed % unit = 'm/s' sitesWindSpeed % offsetZ = 0. CALL WriteMetadata ( network = sitesWindSpeed, & fileunit = fileUnitWindSpeed ) CALL WriteData (sitesWindSpeed, fileUnitWindSpeed, .TRUE.) END IF ELSE varOut (10) = .FALSE. END IF !irrigation IF ( IniReadInt ('irrigation', iniDB ) == 1) THEN IF ( .NOT. ALLOCATED (irrigation % mat) ) THEN CALL Catch ('warning', 'BasinAverage', 'irrigation not allocated, & forced to not export basin average ') varOut (11) = .FALSE. ELSE varOut (11) = .TRUE. countVar = countVar + 1 CALL CopyNetwork ( sites, sitesIrrigation ) fileUnitIrrigation = GetUnit () string = TRIM(pathout) // 'mean_irrigation.fts' OPEN ( unit = fileUnitIrrigation, file = string ) sitesIrrigation % description = 'mean irrigation' sitesIrrigation % unit = 'mm' sitesIrrigation % offsetZ = 0. CALL WriteMetadata ( network = sitesIrrigation, & fileunit = fileUnitIrrigation ) CALL WriteData (sitesIrrigation, fileUnitIrrigation, .TRUE.) END IF ELSE varOut (11) = .FALSE. END IF !snow water equivalent IF ( IniReadInt ('snow-water-equivalent', iniDB ) == 1) THEN IF ( .NOT. ALLOCATED (swe % mat) ) THEN CALL Catch ('warning', 'BasinAverage', 'SWE not allocated, & forced to not export basin average ') varOut (12) = .FALSE. ELSE varOut (12) = .TRUE. countVar = countVar + 1 CALL CopyNetwork ( sites, sitesSWE ) fileUnitSWE = GetUnit () string = TRIM(pathout) // 'mean_swe.fts' OPEN ( unit = fileUnitSWE, file = string ) sitesSWE % description = 'mean snow water equivalent' sitesSWE % unit = 'mm' sitesSWE % offsetZ = 0. CALL WriteMetadata ( network = sitesSWE, & fileunit = fileUnitSWE ) CALL WriteData (sitesSWE, fileUnitSWE, .TRUE.) END IF ELSE varOut (12) = .FALSE. END IF !soil moisture IF ( IniReadInt ('soil-moisture', iniDB ) == 1) THEN IF ( .NOT. ALLOCATED (sm % mat) ) THEN CALL Catch ('warning', 'BasinAverage', 'soil-moisture not allocated, & forced to not export basin average ') varOut (13) = .FALSE. ELSE varOut (13) = .TRUE. countVar = countVar + 1 CALL CopyNetwork ( sites, sitesSM ) fileUnitSM = GetUnit () string = TRIM(pathout) // 'mean_soil-moisture.fts' OPEN ( unit = fileUnitSM, file = string ) sitesSM % description = 'mean soil moisture' sitesSM % unit = 'm3/m3' sitesSM % offsetZ = 0. CALL WriteMetadata ( network = sitesSM, & fileunit = fileUnitSM ) CALL WriteData (sitesSM, fileUnitSM, .TRUE.) END IF ELSE varOut (13) = .FALSE. END IF !runoff IF ( IniReadInt ('runoff', iniDB ) == 1) THEN IF ( .NOT. ALLOCATED (runoff % mat) ) THEN CALL Catch ('warning', 'BasinAverage', 'runoff not allocated, & forced to not export basin average ') varOut (14) = .FALSE. ELSE varOut (14) = .TRUE. countVar = countVar + 1 CALL CopyNetwork ( sites, sitesRunoff ) fileUnitRunoff = GetUnit () string = TRIM(pathout) // 'mean_runoff.fts' OPEN ( unit = fileUnitRunoff, file = string ) sitesRunoff % description = 'mean runoff' sitesRunoff % unit = 'mm' sitesRunoff % offsetZ = 0. CALL WriteMetadata ( network = sitesRunoff, & fileunit = fileUnitRunoff ) CALL WriteData (sitesRunoff, fileUnitRunoff, .TRUE.) END IF ELSE varOut (14) = .FALSE. END IF !infiltration IF ( IniReadInt ('infiltration', iniDB ) == 1) THEN IF ( .NOT. ALLOCATED (infiltration % mat) ) THEN CALL Catch ('warning', 'BasinAverage', 'infiltration not allocated, & forced to not export basin average ') varOut (15) = .FALSE. ELSE varOut (15) = .TRUE. countVar = countVar + 1 CALL CopyNetwork ( sites, sitesInfiltration ) fileUnitInfiltration = GetUnit () string = TRIM(pathout) // 'mean_infiltration.fts' OPEN ( unit = fileUnitInfiltration, file = string ) sitesInfiltration % description = 'mean infiltration' sitesInfiltration % unit = 'mm' sitesInfiltration % offsetZ = 0. CALL WriteMetadata ( network = sitesInfiltration, & fileunit = fileUnitInfiltration ) CALL WriteData (sitesInfiltration, fileUnitInfiltration, .TRUE.) END IF ELSE varOut (15) = .FALSE. END IF !percolation IF ( IniReadInt ('percolation', iniDB ) == 1) THEN IF ( .NOT. ALLOCATED (percolation % mat) ) THEN CALL Catch ('warning', 'BasinAverage', 'percolation not allocated, & forced to not export basin average ') varOut (16) = .FALSE. ELSE varOut (16) = .TRUE. countVar = countVar + 1 CALL CopyNetwork ( sites, sitesPercolation ) fileUnitPercolation = GetUnit () string = TRIM(pathout) // 'mean_percolation.fts' OPEN ( unit = fileUnitPercolation, file = string ) sitesPercolation % description = 'mean percolation' sitesPercolation % unit = 'mm' sitesPercolation % offsetZ = 0. CALL WriteMetadata ( network = sitesPercolation, & fileunit = fileUnitPercolation ) CALL WriteData (sitesPercolation, fileUnitPercolation, .TRUE.) END IF ELSE varOut (16) = .FALSE. END IF !actual evapotranspiration IF ( IniReadInt ('actual-ET', iniDB ) == 1) THEN IF ( .NOT. ALLOCATED (et % mat) ) THEN CALL Catch ('warning', 'BasinAverage', 'et not allocated, & forced to not export basin average ') varOut (17) = .FALSE. ELSE varOut (17) = .TRUE. countVar = countVar + 1 CALL CopyNetwork ( sites, sitesET ) fileUnitET = GetUnit () string = TRIM(pathout) // 'mean_et.fts' OPEN ( unit = fileUnitET, file = string ) sitesET % description = 'mean actual evapotranspiration' sitesET % unit = 'mm' sitesET % offsetZ = 0. CALL WriteMetadata ( network = sitesET, & fileunit = fileUnitET ) CALL WriteData (sitesET, fileUnitET, .TRUE.) END IF ELSE varOut (17) = .FALSE. END IF !potential evapotranspiration IF ( IniReadInt ('potential-ET', iniDB ) == 1) THEN IF ( .NOT. ALLOCATED (pet % mat) ) THEN CALL Catch ('warning', 'BasinAverage', 'pet not allocated, & forced to not export basin average ') varOut (18) = .FALSE. ELSE varOut (18) = .TRUE. countVar = countVar + 1 CALL CopyNetwork ( sites, sitesPET ) fileUnitPET = GetUnit () string = TRIM(pathout) // 'mean_pet.fts' OPEN ( unit = fileUnitPET, file = string ) sitesPET % description = 'mean potential evapotranspiration' sitesPET % unit = 'mm' sitesPET % offsetZ = 0. CALL WriteMetadata ( network = sitesPET, & fileunit = fileUnitPET ) CALL WriteData (sitesPET, fileUnitPET, .TRUE.) END IF ELSE varOut (18) = .FALSE. END IF !soil moisture variation (soil water storage variation) IF ( IniReadInt ('delta-soil-moisture', iniDB ) == 1) THEN IF ( .NOT. ALLOCATED (dsm % mat) ) THEN CALL Catch ('warning', 'BasinAverage', 'delta-soil-moisture not allocated, & forced to not export basin average ') varOut (19) = .FALSE. ELSE varOut (19) = .TRUE. countVar = countVar + 1 CALL CopyNetwork ( sites, sitesDSM ) fileUnitDSM = GetUnit () string = TRIM(pathout) // 'mean_delta-soil-moisture.fts' OPEN ( unit = fileUnitDSM, file = string ) sitesDSM % description = 'mean soil water storage variation' sitesDSM % unit = 'mm' sitesDSM % offsetZ = 0. CALL WriteMetadata ( network = sitesDSM, & fileunit = fileUnitDSM ) CALL WriteData (sitesDSM, fileUnitDSM, .TRUE.) END IF ELSE varOut (19) = .FALSE. END IF !snow melt IF ( IniReadInt ('snow-melt', iniDB ) == 1) THEN IF ( .NOT. ALLOCATED (snowmelt % mat) ) THEN CALL Catch ('warning', 'BasinAverage', 'snow-melt not allocated, & forced to not export basin average ') varOut (20) = .FALSE. ELSE varOut (20) = .TRUE. countVar = countVar + 1 CALL CopyNetwork ( sites, sitesSnowMelt ) fileUnitSnowMelt = GetUnit () string = TRIM(pathout) // 'mean_snow-melt.fts' OPEN ( unit = fileUnitSnowMelt, file = string ) sitesSnowMelt % description = 'mean snow melt' sitesSnowMelt % unit = 'mm' sitesSnowMelt % offsetZ = 0. CALL WriteMetadata ( network = sitesSnowMelt, & fileunit = fileUnitSnowMelt ) CALL WriteData (sitesSnowMelt, fileUnitSnowMelt, .TRUE.) END IF ELSE varOut (20) = .FALSE. END IF !ice water equivalent IF ( IniReadInt ('ice-water-equivalent', iniDB ) == 1) THEN IF ( .NOT. ALLOCATED (iwe % mat) ) THEN CALL Catch ('warning', 'BasinAverage', 'ice-water-equivalent not allocated, & forced to not export basin average ') varOut (21) = .FALSE. ELSE varOut (21) = .TRUE. countVar = countVar + 1 CALL CopyNetwork ( sites, sitesIWE ) fileUnitIWE = GetUnit () string = TRIM(pathout) // 'mean_icewe.fts' OPEN ( unit = fileUnitIWE, file = string ) sitesIWE % description = 'mean ice water equivalent' sitesIWE % unit = 'mm' sitesIWE % offsetZ = 0. CALL WriteMetadata ( network = sitesIWE, & fileunit = fileUnitIWE ) CALL WriteData (sitesIWE, fileUnitIWE, .TRUE.) END IF ELSE varOut (21) = .FALSE. END IF !ice melt IF ( IniReadInt ('ice-melt', iniDB ) == 1) THEN IF ( .NOT. ALLOCATED (icemelt % mat) ) THEN CALL Catch ('warning', 'BasinAverage', 'ice-melt not allocated, & forced to not export basin average ') varOut (22) = .FALSE. ELSE varOut (22) = .TRUE. countVar = countVar + 1 CALL CopyNetwork ( sites, sitesIceMelt ) fileUnitIceMelt = GetUnit () string = TRIM(pathout) // 'mean_ice-melt.fts' OPEN ( unit = fileUnitIceMelt, file = string ) sitesIceMelt % description = 'mean icemelt' sitesIceMelt % unit = 'mm' sitesIceMelt % offsetZ = 0. CALL WriteMetadata ( network = sitesIceMelt, & fileunit = fileUnitIceMelt ) CALL WriteData (sitesIceMelt, fileUnitIceMelt, .TRUE.) END IF ELSE varOut (22) = .FALSE. END IF CALL IniClose (iniDB) !create grid to cumulate variable IF ( countVar > 0 ) THEN CALL NewGrid (cum, mask) END IF RETURN END SUBROUTINE InitBasinAverage